package edu.hawaii.examschd.commands;

import edu.hawaii.examschd.modules.ExamScheduler;
import edu.hawaii.examschd.modules.Module;

/**
 * Defines required methods for a command.
 * 
 * @author John MacMillan
 */
public interface Command {

  /**
   * Initializes this command with a healthy client.
   * 
   * @param client A healthy client used to initialize the command
   * @param args Arguments required by the command for execution
   * @return Whether or not the arguments passed was accepted by the command initialization
   */
  public boolean initializeCommand(ExamScheduler client, String[] args);

  /**
   * Returns the name of this command.
   * 
   * @return the name of this command
   */
  public String getName();

  /**
   * Returns the usage syntax of this command.
   * 
   * @return the usage syntax of this command
   */
  public String getUsage();

  /**
   * Returns the description of this command.
   * 
   * @return a description of this command
   */
  public String getDescription();

  /**
   * Prints the results of executing this command.
   */
  public void printResults();
}